package model

import (
	"time"

	"gorm.io/gorm"
)

// Interview 面试模型
// 用于管理求职者的面试信息，包括面试安排、评价和结果等
type Interview struct {
	ID        uint           `gorm:"primarykey" json:"id"` // 面试记录ID，主键
	CreatedAt time.Time      `json:"created_at"`           // 记录创建时间
	UpdatedAt time.Time      `json:"updated_at"`           // 记录更新时间
	DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`       // 软删除时间

	CandidateID  uint      `gorm:"not null" json:"candidate_id"`     // 关联的候选人ID
	PositionID   uint      `gorm:"not null" json:"position_id"`      // 关联的职位ID
	ScheduleTime time.Time `gorm:"not null" json:"schedule_time"`    // 面试时间，安排的面试具体时间点
	Location     string    `gorm:"size:100" json:"location"`         // 面试地点，可以是具体地址或线上会议链接
	Type         int       `gorm:"not null;default:1" json:"type"`   // 面试类型：1-初试, 2-复试, 3-终试
	Status       int       `gorm:"not null;default:1" json:"status"` // 状态：1-待面试（已安排），2-已完成（面试结束），3-已取消（面试取消）
	Score        float32   `json:"score"`                            // 面试评分，面试官对候选人的综合评分
	Evaluation   string    `gorm:"size:1000" json:"evaluation"`      // 面试评价，面试官的详细评价内容
	Result       int       `json:"result"`                           // 面试结果：1-通过（建议录用），2-待定（需要进一步考虑），3-不通过（不建议录用）
	Feedback     string    `gorm:"size:500" json:"feedback"`         // 候选人反馈，记录候选人对面试的反馈意见
	Notes        string    `gorm:"size:500" json:"notes"`            // 面试备注，记录面试过程中的其他重要信息
}
